// 什么是接口
// 接口声明是命名对象类型的另一种方式：
// 换句话说，接口就是专门用来创建对象类型的
// 定义接口的语法
interface Point {
  x: number;
  y;
}

type Animal = {
  name: string;
};

type Bear = Animal & {
  honey: boolean;
};
const bear: Bear = {
  name: "1",
  honey: false,
};
type C = string & number;


// 在定义对象类型这一块，接口和类型别名是差不多的
// 接口可以拓展自其他接口，类型别名也可以是另一个类型别名与第三个类型的交叉实现继承
// 唯一不同就是，接口可以随意在原接口的基础上添加属性，类型别名重写报错
    interface Aa  {
        a:number
    }
    interface Aa {
        b:string
    }

    const ca:Aa ={
        a:1,
        b:'1'
    }
    // 两次interface Aa,结果Aa接口变成了，两次属性的累加,就是说，接口定义后，可以任意在原接口上添加属性
    

    // type Bb = {
    //     a:number
    // }
    // type Bb = {
    //     b:string
    // }

    // 这里类型别名，不能重复定义，否则报错